home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / cat / mtpaths.i < prev    next >
Text File  |  1997-10-26  |  6KB  |  187 lines

  1. IMPLEMENTATION MODULE MTPaths;
  2.  
  3. FROM SYSTEM    IMPORT ADR;
  4. FROM Characters  IMPORT CR, LF;
  5. FROM CatFiles  IMPORT SetPath, GetPath;
  6. FROM Void      IMPORT v;
  7. IMPORT MTE;
  8. IMPORT MagicAES;
  9. IMPORT MagicDOS;
  10. IMPORT MagicStrings;
  11. IMPORT mtAppl;
  12. IMPORT mtCommand;
  13. IMPORT mtDir;
  14. IMPORT mtAlerts;
  15. IMPORT mtTextfiles;
  16. IMPORT CatGlobal;
  17.  
  18. (*
  19. VAR ARCPath,
  20.     EditorPath,
  21.     MessagePath,
  22.     ImportPath,
  23.     ExportPath,
  24.     DataPath,
  25.     TerminalPath  : ARRAY[0..160] OF CHAR;
  26.     ARCName,
  27.     EditorName,
  28.     archiveName,
  29.     TerminalName : ARRAY[0..14] OF CHAR;
  30.     enarcStr,
  31.     dearcStr,
  32.     TerminalCmd  : ARRAY[0..80] OF CHAR;
  33.     Gruppe       : ARRAY[0..7] OF ARRAY[0..16] OF CHAR;
  34.     ReadPos      : CARDINAL;
  35. *)
  36.  
  37. CONST catinf = 'cat.inf'+0C;
  38.  
  39. VAR slash  : ARRAY[0..1] OF CHAR;
  40.  
  41. PROCEDURE ReadString(CATINF : mtTextfiles.TEXTFILE; VAR str : ARRAY OF CHAR):BOOLEAN;
  42. BEGIN
  43.   IF mtTextfiles.EndofText(CATINF) THEN RETURN FALSE; END;
  44.   mtTextfiles.ReadLine(CATINF, str);
  45.   mtTextfiles.ReadLn(CATINF);
  46.   RETURN TRUE;
  47. END ReadString;
  48.  
  49. PROCEDURE ReadInf(VAR path, name : ARRAY OF CHAR; noCommand, showError: BOOLEAN):BOOLEAN;
  50. VAR z      : CARDINAL;
  51.     CATINF : mtTextfiles.TEXTFILE;
  52.  
  53.     currentPath,
  54.     sARCPath,
  55.     sEditorPath,
  56.     sMessagePath,
  57.     sImportPath,
  58.     sExportPath,
  59.     sDataPath,
  60.     sTerminalPath : ARRAY[0..255] OF CHAR;
  61.     sARCName,
  62.     sarchiveName,
  63.     sTerminalName : ARRAY[0..40] OF CHAR;
  64.     senarcStr,
  65.     sdearcStr,
  66.     sTerminalCmd  : ARRAY[0..255] OF CHAR;
  67.  
  68.     openName : ARRAY[0..12] OF CHAR;
  69.     scrap    : ARRAY[0..255] OF CHAR;
  70.     infname  : ARRAY[0..79] OF CHAR;
  71.  
  72.   PROCEDURE err();
  73.   BEGIN
  74.     IF showError THEN v.int := mtAlerts.Alert(1, MTE.noInf); END;
  75.   END err;
  76.   
  77.   PROCEDURE err2();
  78.   BEGIN
  79.     IF showError THEN v.int := mtAlerts.Alert(1, MTE.illegalInf); END;
  80.   END err2;
  81.   
  82. BEGIN
  83.   (* Wenn ein Dateiname bergeben wird, dann soll der geladen werden. 
  84.    * Wenn auch in der Kommandozeile ein Dateiname steht und noCommand FALSE
  85.    * ist, dann soll der Dateiname aus der Kommandozeile genommen werden
  86.    *)
  87.   IF ~noCommand & (mtCommand.ParamCount() > 0)
  88.   THEN
  89.     mtCommand.ParamString(1, scrap);
  90.     z := MagicStrings.Length(scrap);
  91.     WHILE (z > 0) & (scrap[z-1] < ' ') DO scrap[z-1] := 0C; DEC(z) END;
  92.     (* Steuerzeichen am Ende vernichten *)
  93.     IF (scrap[0] # '-') & (scrap[0] # 0C) THEN
  94.       mtDir.SplitPath(scrap, path, openName, name);
  95.       IF path[0] = 0C
  96.       THEN
  97.         (* Applikations-Pfad nehmen *)
  98.         CatGlobal.ApplPath (path);
  99.       END;
  100.     ELSE
  101.       MagicStrings.Assign (name, openName);
  102.     END;
  103.   ELSIF (path[0] = 0C)
  104.   THEN 
  105.     (* Kein Pfad bergeben, Default nehmen *)
  106.     MagicStrings.Assign (catinf, openName);
  107.  
  108.     (* Pfad der Applikation nehmen *)
  109.     CatGlobal.ApplPath(path);
  110.   ELSE
  111.     MagicStrings.Assign(name, openName);
  112.   END;
  113.   IF openName[0] = ''
  114.   THEN
  115.     MagicStrings.Assign (catinf, openName);
  116.   END;
  117.  
  118.   MagicStrings.Assign(path, scrap);
  119.   MagicStrings.Append(openName, scrap);
  120.   IF ~mtTextfiles.OpenTextfile(scrap, mtTextfiles.READ, 512, CATINF) THEN
  121.     (* Wenn nicht auf aktuellem Pfad, dann ber ShelFind probieren *)
  122.     MagicStrings.Assign (openName, scrap);
  123.     MagicAES.ShelFind(scrap);
  124.     IF ~mtTextfiles.OpenTextfile(scrap, mtTextfiles.READ, 512, CATINF) THEN
  125.       IF ~MagicStrings.Equal (openName, catinf) & ~noCommand
  126.       THEN
  127.         MagicStrings.Assign (catinf, openName);
  128.         MagicStrings.Assign(path, scrap);
  129.         MagicStrings.Append(openName, scrap);
  130.         IF ~mtTextfiles.OpenTextfile(scrap, mtTextfiles.READ, 512, CATINF) THEN
  131.           err(); RETURN FALSE
  132.         END;
  133.       ELSE
  134.         err(); RETURN FALSE
  135.       END;
  136.     END;
  137.   END;
  138.   IF ~ReadString(CATINF, sARCPath)      OR ~ReadString(CATINF, sARCName)     OR
  139.      ~ReadString(CATINF, senarcStr)     OR ~ReadString(CATINF, sdearcStr)    OR
  140.      ~ReadString(CATINF, sarchiveName)  OR ~ReadString(CATINF, sEditorPath)
  141.   THEN
  142.     mtTextfiles.CloseTextfile(CATINF);
  143.     err2();
  144.     RETURN FALSE
  145.   END;
  146.   IF ~ReadString(CATINF, sEditorPath)   OR ~ReadString(CATINF, sMessagePath) OR
  147.      ~ReadString(CATINF, sImportPath)   OR ~ReadString(CATINF, sExportPath)  OR
  148.      ~ReadString(CATINF, sDataPath)     OR ~ReadString(CATINF, sTerminalPath) THEN
  149.     mtTextfiles.CloseTextfile(CATINF);
  150.     err2();
  151.     RETURN FALSE
  152.   END;
  153.   IF ~ReadString(CATINF, sTerminalName) OR ~ReadString(CATINF, sTerminalCmd) THEN
  154.     mtTextfiles.CloseTextfile(CATINF);
  155.     err2();
  156.     RETURN FALSE
  157.   END;
  158.   mtTextfiles.CloseTextfile(CATINF);
  159.   GetPath (currentPath);
  160.   IF SetPath(sMessagePath) & SetPath(sImportPath) &
  161.      SetPath(sExportPath)  & SetPath(sDataPath) THEN
  162.     MagicStrings.Assign( sARCPath,      ARCPath       );
  163.     MagicStrings.Assign( sMessagePath,  MessagePath   );
  164.     MagicStrings.Assign( sImportPath,   ImportPath    );
  165.     MagicStrings.Assign( sExportPath,   ExportPath    );
  166.     MagicStrings.Assign( sDataPath,     DataPath      );
  167.     MagicStrings.Assign( sTerminalPath, TerminalPath  );
  168.     MagicStrings.Assign( sARCName,      ARCName       );
  169.     MagicStrings.Assign( sarchiveName,  archiveName   );
  170.     MagicStrings.Assign( sTerminalName, TerminalName  );
  171.     MagicStrings.Assign( senarcStr,     enarcStr      );
  172.     MagicStrings.Assign( sdearcStr,     dearcStr      );
  173.     MagicStrings.Assign( sTerminalCmd,  TerminalCmd   );
  174.     v.bool := SetPath (currentPath);
  175.     MagicStrings.Assign (scrap, lastInfName);
  176.     MagicStrings.Assign (path, CatGlobal.infPath);
  177.     MagicStrings.Assign (openName, CatGlobal.infName);
  178.     RETURN TRUE
  179.   ELSE
  180.     IF showError THEN v.int := mtAlerts.Alert(1, MTE.notAllPaths); END;
  181.     v.bool := SetPath (currentPath);
  182.     RETURN FALSE
  183.   END
  184. END ReadInf;
  185.  
  186. END MTPaths.
  187.